// __PUBLIC__/admin/js/page/admin/global/editarea

/**
 * yan:  添加修改页面改为弹出层较好。
 *
 *
 */

require(['../../common'], function() {
  require(['global.editarea'])
})

define('global.editarea', [
  'jquery',
  'jqp/validate'
], function($) {
  'use strict';

  var $p = $('#J_province')
  var provinceId = $p.data('id')
  $p.val(provinceId)
  var $c = $('#J_city')
  var cityId = $c.data('id') || 0 // 服务端错误的为空
  if (cityId) {
    // 注意缓存的 select 应该 value=0
    cache(provinceId, $c.html())
    $c.val(cityId)
  }

  var $form = $('#J_form')
  var isEdit = $form.data('type') === 'edit'
  var $pid = $('#pid')
  // pid 指 parent id 而不是 province id
  var pid = $pid.val()
  var $title = $('#title')
  var c0 = $c.get(0)[0].outerHTML

  if (isEdit) {
    var oldpid = pid
    var oldtitle = $title.val()
  }

  // 缓存省份的城市列表
  // 如果不刷新页面则添加地区后需要清理一下相应缓存

  function cache(id, str) {
    if (str) {
      $p.data(id, str)
    } else {
      return $p.data()[id]
    }
  }

  // 获取城市列表

  function get(id) {
    var str = cache(id)
    if (str) {
      $c.html(str)
    } else {
      $.post(APP + '?app=admin&m=Global&a=ajaxQryArea', {
        pid: pid
      })
        .done(function(data) {
          // console.log(data)
          // TODO: 将 xml 改为 json
          var xmldoc = $.parseXML(data)
          var $items = $(xmldoc).find('Item')
          // outerHTML ff 11+
          var html = c0
          $items.each(function() {
            var $this = $(this)
            html += '<option value=' + $this.children('area_id').text() + '>' + $this.children('title').text() + '</option>'
          })
          // console.log(html)
          cache(id, html)
          $c.html(html)
        })
    }
  }

  function add(title) {
    $.post(APP + '?app=admin&m=Global&a=doAddArea', {
      title: title,
      pid: pid
    })
      .done(function(res) {
        if (res == '0') {
          alert(lang.saveFails)
        } else {
          // TODO: 提供 confirm， 是继续添加还是返回
          alert(lang.saveSuccess)
          location.href = APP + '?app=admin&m=Global&a=doQryArea&pid=' + pid
        }
      })
  }

  function edit(title) {
    var area_id = $('#area_id').val()

    $.post(APP + '?app=admin&m=Global&a=doEditArea', {
      area_id: area_id,
      title: title,
      pid: pid
    })
      .done(function(res) {
        if (res == '0') {
          alert(lang.saveFails)
        } else {
          alert(lang.saveSuccess)
          location.href = APP + '?app=admin&m=Global&a=doQryArea&pid=' + pid
        }
      })
  }

  // 自定义表单提交处理器

  function submitForm() {
    var title = $.trim($title.val())

    if (!isEdit) {
      add(title)
    } else {
      if (title === oldtitle && pid === oldpid) {
        alert(lang.noChangeArea)
        return false
      }
      edit(title)
    }
  }

  // 只支持两级，省份与城市
  // 切换省份或城市时都要改变 pid 即当前地区的上一级地区
  $p.on('change', function() {
    var val = this.value
    pid = val
    $pid.val(val)
    val && get(val)
  })

  $c.on('change', function() {
    var val = this.value
    pid = val
    $pid.val(val)
  })

  $form.validate({
    // debug: true,
    classPlace: '.kv',
    errorPlace: '.kv-error',
    formSubmit: submitForm,
    errors: {
      'title': {
        required: lang.nullArea
      }
    }
  })

})
